package zbl.c0.symbol;

/**
 * 		符号表单元，该类记录程序中出现的每一个可识别符号的详细信息。
 * @author 朱伯龙
 *
 */

public class Symbol {

	/**
	 * 符号名称
	 */
	public String name;

	/**
	 * 常量、变量类型
	 */
	public int type;
	
	public static int CONST = 0;
	public static int VAR = 1;
	
	
	/**
	 * 	变量的层次差， 1表示在全局定义， 0表示在函数内定义
	 */
	public int level;
	

	/**
	 * 保存变量的地址
	 */
	public int address;
	
	/**
	 * 保存常量的值
	 */
	public int constValue;

	/**
	 * 		变量符号的构造函数
	 * @param name			变量名
	 * @param adress		变量的地址
	 */
	public Symbol(String name, int address, int level){
		this.name = name;
		this.type = Symbol.VAR;
		this.address = address;
		this.level = level;
	}

	
	/**
	 * 		常量符号的构造函数
	 * @param name			常量名
	 * @param constValue	常量的值
	 */
	public Symbol(int constValue, String name){
		this.name = name;
		this.type = Symbol.CONST;
		this.constValue = constValue;
		this.level = -1;
	}
	
}
